<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			"use strict"
			function Person(name,age){
				this.name = name ;
				this.age = age;
				this.sayHi = function(){
					console.log('Hello...');
				};
				//上述的name\age\sayHi就是实例成员
			}
			Person.hobby = 'running';
			Person.climb = function(){
				console.log('Climbing...');
			};
			//上述的hobby和climb就是静态成员
			Person.prototype.jump = function(){
				console.log('Jumping...');
			};
			//jump为p1的__proto__属性指向的它的原型对象上的成员
			//===============那么，
			var p1 = new Person('Lucy',29);
			p1.name  //'Lucy'
			p1.age  //29
			p1.sayHi()  //Hello...
			p1.jump()  // Jumping...
			Person.climb() //Climbing...
			Person.hobby  //running...
			//==============但是
			//p1.climb()  //报错,方法为Person的私有化静态成员.
			//Person.sayHi()  //报错,因未实例化
			//Person.jump() //报错,原型添加方法,并未实例化
			
			
			//一个名为"say"的实例方法，一个名为"say"的内部函数,和同样名为"say"的静态方法。这三种不同的方法,都是彼此独立地存在的。
			Person = function() {
				this.say = function() {//实例方法
					return "I'm an instance.";
				}
				function say() {//内部函数
					return "I'm inner.";
				}
			}
			Person.say = function() {//静态方法.
				return "I'm static.";
			}
			var p = new Person();
			p.say();      // I'm an instance. 实例
			Person.say(); // I'm static. 静态
			// 这里无法直接访问内部函数 there is no way to directly access the inner function from here
			
			
		</script>
	</body>
</html>